package brisca;



import java.util.logging.Level;
import java.util.logging.Logger;
import jugadores.Humano;
import cartas.*;
import jugadores.Maquina;
import tute.TuteView;

public class Brisca extends Thread{

    TuteView gui;
	public Brisca(TuteView tute){
		super();
                gui = tute;
	}
	public void run(){
	mazo m = new mazo();
	mazo mesa = new mazo();
	m.llenarMazo();
	m.barajar();
	m.sacarPalo();
        
	Humano h = new Humano("felix",gui);
        Maquina h2 = new Maquina("cpu");
        
	for(int i=0; i<3;i++){
		h.repartir(m.sacarNaipe());
		h2.repartir(m.sacarNaipe());
	}
	int  jugador = 1;
	for(int i=0; i<20; i++){
		
		if(jugador==1){
                
                    Naipe n = h.jugar(mesa, m.palo());
                    mesa.anadirNaipe(n);
                    Naipe n2 = h2.jugar(m, m.palo(),mesa);
                    mesa.sacarNaipe();
                    Naipe g = compara(n, n2, m.palo());
                    if (g.equals(n)) {
                        System.out.println("jugador " + h.nombre() + " gano la mano");
                        jugador = 1;
                        h.tomar(n);
                        h.tomar(n2);
                        if (i < 17) {
                            h.repartir(m.sacarNaipe());
                            h2.repartir(m.sacarNaipe());
                        }
                    } else {
                        System.out.println("jugador " + h2.nombre() + " gano la mano");
                        jugador = 2;
                        h2.tomar(n);
                        h2.tomar(n2);
                        if (i < 17) {
                            h2.repartir(m.sacarNaipe());
                            h.repartir(m.sacarNaipe());
                        }
                    }
                
		}
		else{
                
                    Naipe n = h2.jugar(mesa, m.palo(),mesa);
                    mesa.anadirNaipe(n);
                    Naipe n2 = h.jugar(mesa, m.palo());
                    mesa.sacarNaipe();
                    Naipe g = compara(n, n2, m.palo());
                    if (g.equals(n)) {
                        System.out.println("jugador " + h2.nombre() + " gano la mano");
                        jugador = 2;
                        h2.tomar(n);
                        h2.tomar(n2);
                        if (i < 17) {
                            h2.repartir(m.sacarNaipe());
                            h.repartir(m.sacarNaipe());
                        }
                    } else {
                        System.out.println("jugador " + h.nombre() + " gano la mano");
                        jugador = 1;
                        h.tomar(n);
                        h.tomar(n2);
                        if (i < 17) {
                            h.repartir(m.sacarNaipe());
                            h2.repartir(m.sacarNaipe());
                        }
                    }
              
		}		
		       try{
                //Brisca.sleep(10000);
		mesa.sacarNaipe();
                mesa.sacarNaipe();
                }
                catch(Exception e){
                    e.printStackTrace();
                }
	}
	
	int a = h.mazo().contar();
	int b = h2.mazo().contar();
	if(a>b)
		System.out.println(h.nombre()+" ganaste!");
	else
		if(b>a)
			System.out.println(h2.nombre()+" ganaste!");
		else
			System.out.println("El juego es un empate.");
	
	
	}
	
	public Naipe compara(Naipe n, Naipe n2, Naipe palo){
		Naipe gano = null;
		
		if(n.nombreFlor().equals(n2.nombreFlor())){
			if(n.valor()>n2.valor())
				gano = n;
			else
				if(n.valor()<n2.valor())
					gano = n2;
				else
					if(n.numero()>n2.numero())
						gano = n;
					else
						gano = n2;
			
		}
		else
			if(!(n.nombreFlor().equals(palo.nombreFlor())) && n2.nombreFlor().equals(palo.nombreFlor()))
				gano = n2;
			else
				gano = n;
	
		
		
		
		return gano;
	}
	
	
}
